1. Field of the Invention
This invention relates generally to computing systems and electronics, and, more particularly, to a method and apparatus for generating random numbers, such as in a computer system.
2. Description of the Related Art
The use of random numbers, as true random numbers (TRN), as pseudo-random numbers (PRN), and as practically strong random numbers (PSRN) has become very important in modern society. The advent of the inexpensive personal computer, with its astounding computing power for the cost, as well as more powerful server computers has led to an increased interest in computer security, data security, Monte Carlo modeling methods, and tie-breaking protocols, just to name a few of the areas where random numbers are used.
U.S. National Institute of Standards and Technology (NIST) cryptographic standards are specified in Federal Information Processing Standards (FIPS) Publications. Tests for randomness are given in the NIST Special Publication 800–22 (with revisions dated May 15, 2001), titled “A Statistical Test Suite For Random And Pseudorandom Number Generators For Cryptographic Applications.” Many software algorithms for producing pseudo-random numbers pass the FIPS tests, but the software algorithms are usually relatively slow. Hardware methods used to produce true random number include measuring the rate of radioactive decay, thermal noise, or background noise, just to name a few. These hardware methods, however, employ processes that are usually difficult to reliably implement. PRN values are obtained by looking for available entropy within the computer. Sources of entropy may include the system clock, the timing of key strokes, number of cache misses, statistics concerning interrupts, content of I/O buffers, and other system variables. This raw information is combined with a hash function to produce random numbers. This procedure is slow and cannot guarantee cryptographically strong results.